(function($){
    var toDoList = {
        init:function(){//设置初始化
            this.cacheElement()//执行缓存元素的方法
            this.addEvent()//执行添加事件的方法
        },
        cacheElement:function(){//清除缓存
            this.$ipt = $('.ipt')
            this.$add = $('.add')
            this.$todolist = $('.todolist')//任务列表
            this.$all = $('.all')
            this.$done = $('.done')//完成
            this.$removes = $('.removes')//删除
            this.$donelist = $('.donelist')//完成列表
        },
        addEvent:function(){//添加事件
            var $this = this //添加的列表
            //设置添加任务
            this.$add.click(function (){
                var iptVal = $this.$ipt.val()//设置输入框的值
                if(!iptVal){
                    alert('输入的内容不能为空哦')//设置假如输入空内容那就给个提示
                    return false
                }
                var domStr = '<li><input type="checkbox" value=""><span class="con">'+iptVal+'</span><input type="text" class="repIpt"><span class="remove">删除</span><span class="edit">编辑</span></li>'
                $this.$todolist.append(domStr)// 任务列表添加
                $this.$ipt.val('')//清空输入框的内容
                $this.$add.prop('checked',false)//预先选定复选框或单选按钮。
            })
            
            //编辑功能
            this.$todolist.on('click','.edit',function(){
                var task = $(this).sibling('.con').text()//当前任务的文本内容
                $(this).siblings('.con').hide()//指向点击事件
                $(this).sibling('.repIpt').show()//隐藏显示的内容
                $(this).sibling('.repIpt').val(task).focus()//元素获得焦点
                //完成编辑
                $(this).sibling('.repIpt').blur(function(){//设置一个失去焦点事件
                    var val = $(this).val()//显示当前输入框的值
                    $(this).hide()//完成编辑后隐藏
                    $(this).sibling('.con').text(val).show()
                })
            })
            //设置删除单个任务
            this.$todolist.on('click','.remove',function(){
                $(this).parent().remove()
                //判断是全选还是单选
                $('.todolist input[type=checkbox]').each(function(index,dom){
                    if(!$(dom).prop('checked')){
                        $this.$all.prop('checked',false)
                        return false    //结束each
                    }
                    $this.$all.prop('checked',true)//预先选定复选框或单选按钮。
                })
            })
            //批量处理
            this.$done.click(function(){
                $('.todolist input:checked').each(function (index,dom){
                    var task = $(dom).siblings('.con').text()//当前任务的文本
                    $(dom).parent().remove()
                    $this.$donelist.append('<li>'+task+'</li>')
                })
                $this.$all.prop('checked',false)//预先选定复选框或单选按钮。
            })
            //设置批量删除
            this.$removes.click(function(){
                $('.todolist input:checked').each(function(index,dom){
                    $(dom).parent().remove()
                })
                $this.$all.prop('checked',false)//预先选定复选框或单选按钮。
            })
            //设置点击全选
            this.$all.click(function(){
                if($(this).prop('checked')){
                    //勾选了全选
                    $('.todolist input').prop('checked',true)
                }else{
                    //去掉了全选
                    $('.todolist input').prop('checked',false)
                }
            })
            //勾选单个任务
            this.$todolist.on('click','input[type=checkbox]',function(){
                $('.todolist input[type=checkbox]').each(function(index,dom){
                    if(!$(dom).prop('checked')){
                        $this.$all.prop('checked',false)
                        return false //结束each
                    }
                    $this.$all.prop('checked',true)
                })
            })

        }
    }
    toDoList.init()
})(jQuery)